/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"83B4C2B9-47C8-4039-A001-78581B7E4F38"}
 */
var fProducto = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"24FBFE26-F2C3-4807-B034-773CFB86D40D",variableType:4}
 */
var fProveedor = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"0275F161-B24C-4CB4-9E60-84609951FC09",variableType:4}
 */
var fCambioPrecio = 0;

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"D0505D5B-4257-40DD-A168-9D22DC601F4A"}
 */
function cancelar(event) {
	databaseManager.revertEditedRecords()
	databaseManager.setAutoSave(true)
	var $win = application.getWindow('CARGA_PRECIO')
	$win.hide()
	$win.destroy()
	forms.precios_proveedor_prod_ind.buscar()
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"70AE570C-AD12-4C2C-BD88-A114DB741623"}
 */
function agregar(event) {
	if (precio == null)
	{
		globals.DIALOGS.showInfoDialog('Aviso', ' Por favor indique el precio antes de seguir',  "OK")  //  23/01/2014
		return false
	}
	var $proveedores = provCargados(producto_id)
	var prod_ant = globals.gProductoPrecio
	globals.gProductoPrecio = producto_id
	if (gproducto_precio_to_productos_ind.proveedor_unico == 1 && $proveedores > 0)
	{
		globals.gProductoPrecio = prod_ant
		globals.DIALOGS.showInfoDialog('Aviso','El producto ya tiene proveedores cargados. No puede ser unico','OK')   //  23/01/2014 
		return false
	}
	globals.gProductoPrecio = prod_ant
	
	if (fCambioPrecio == 1)
	{
		var $rcd = foundset.getRecord(foundset.getSelectedIndex())
		if ($proveedores > 0)
		{
			if (mayorMaximo(producto_id,precio) == 1)
			{
				grabarHistorico($rcd)
				grabarCambioPrecio($rcd)
			}
		}
		else
			grabarHistorico($rcd)
	}
	
	if (!databaseManager.saveData())
		globals.DIALOGS.showInfoDialog('Error','Ocurrio un error en la grabacion','OK')  // 23/01/2014
	else
	{
		databaseManager.setAutoSave(true)
		application.closeForm('CARGA_PRECIO')
		forms.precios_proveedor_prod_ind.buscar()
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"2C43AEF3-D66F-47BC-A0B7-50688A9E5DE5"}
 */
function grabarCambioPrecio($rcd)
{
	var $cambio = databaseManager.getFoundSet('infocom','cambio_precios')
	
	$cambio.newRecord()
	$cambio.producto_id 	= $rcd.producto_id
	$cambio.maderas_id 		= $rcd.precios_proveedor_to_productos_ind.maderas_id
	$cambio.margen 			= $rcd.precios_proveedor_to_productos_ind.margen
	$cambio.rubros_id 		= $rcd.precios_proveedor_to_productos_ind.rubros_id
	$cambio.precio_anterior = $rcd.precios_proveedor_to_productos_ind.costo
	$cambio.precio_nuevo	= $rcd.precio_neto
	$cambio.moneda_id 		= $rcd.precios_proveedor_to_productos_ind.moneda_id
	$cambio.fletes_id 		= $rcd.precios_proveedor_to_productos_ind.fletes_id
	$cambio.descripcion		= 'Articulo: ' + $rcd.precios_proveedor_to_productos_ind.cod_producto + ' - ' + $rcd.precios_proveedor_to_productos_ind.descripcion
	$cambio.tipo			= globals.zconf_cambio_prec_tipo_proveedor
	$cambio.estado			= globals.zconf_cambio_prec_estado_ingresado
	
}

/**
 * @properties={typeid:24,uuid:"F34F7129-BCCC-4CA3-AF7D-F74D8CF28A88"}
 */
function mayorMaximo(producto,$precio)
{
	var query = 'SELECT MAX(precio) as "maximo" FROM precios_proveedor where producto_id = ?'
	var max = 1
	var args = [producto]
	var ds = databaseManager.getDataSetByQuery('infocom',query,args,max)
	
	if (precio > ds.getValue(1,1))
		return 1
	
	return 0
}

/**
 * @properties={typeid:24,uuid:"D7B8732A-C78E-4A92-8631-0FB1DC049DC0"}
 */
function grabarHistorico($rcd)
{
	var $hist = databaseManager.getFoundSet('infocom','precios_proveedor_historico')
	
	$hist.newRecord()
	
	$hist.precio 		= $rcd.precio
	$hist.producto_id	= $rcd.producto_id
	$hist.proveedor_id	= $rcd.proveedor_id
	$hist.userv_id		= $rcd.userv_id
	$hist.fecha			= $rcd.fecha
	$hist.fecha_desde	= $rcd.fecha
	$hist.cod_art_prov	= $rcd.cod_art_prov
}

/**
 * @properties={typeid:24,uuid:"7D572339-3C61-403A-94B7-55A47FE905B5"}
 */
function provCargados(producto)
{
	var query = 'select precio_proveedor_id from precios_proveedor where producto_id = ?'
	var max = -1
	var args = new Array()
	args[0] = producto
	var ds = databaseManager.getDataSetByQuery('infocom',query,args,max)
	
	return ds.getMaxRowIndex()
}

/**
 * @properties={typeid:24,uuid:"C3524D60-A10F-4893-BCA2-6C61E4E9D58F"}
 */
function buscarProveedores()
{
	var query = 'select proveedor_id from proveedor where proveedor_id = ?'
	var max = 1
	var args = [fProveedor]
	var ds = databaseManager.getDataSetByQuery('infocom',query,args,max)
	
	if (ds.getMaxRowIndex() == 1)
	{
		proveedor_id = ds.getValue(1,1)
	}
	else
	{
		globals.DIALOGS.showInfoDialog('Aviso','Proveedor no encontrado','OK') // 23/01/2014
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"D3D94547-3E87-416C-A2E1-0F998BCD77BA"}
 */
function buscarProductos()
{
	var query = 'select producto_id from productos where cod_producto = ?'
	var max = 1
	var args = new Array(fProducto)
	var ds = databaseManager.getDataSetByQuery('infocom',query,args,max)
	
	if (ds.getMaxRowIndex() == 1)
	{
		producto_id = ds.getValue(1,1)
	}
	else
	{
		globals.DIALOGS.showInfoDialog('Aviso','Producto no encontrado','OK')  // 23/01/2014
	}
	return true
}

/**
 * Handle changed data.
 *
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"F52DE2E1-AD62-4CBC-82E1-7A65B3077B71"}
 */
function calculaNeto() {
	if (precio == null)
		precio_neto = null
	else
		if (bonificacion == null)
			precio_neto = precio
		else
			precio_neto = precio * (1 - bonificacion / 100)
	return true
}

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"BEC8C1F7-E4F6-42FB-A701-EBBDB04F7543"}
 */
function onShow(firstShow, event) {
	fCambioPrecio = 0
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"770595A3-BFC5-4283-BA93-7DDFDC270323"}
 */
function onDataChangePrecio(oldValue, newValue, event) {
	if (oldValue != null && newValue < oldValue)
		globals.DIALOGS.showInfoDialog('Aviso','El precio ingresado es menor al precio anterior','OK') // 23/01/2014

	fCambioPrecio = 1
	calculaNeto()
	return true
}
